package com.xiayuanxing.gulimall.gateway.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.lang.Nullable;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsConfigurationSource;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
import org.springframework.web.server.ServerWebExchange;

/**
 * @program: gulimall
 * @description: 跨域配置类
 * @author: 夏远兴
 * @create: 2020-04-26 00:50
 **/
@Configuration//标志是一个配置类
public class GulimallCorsConfiguratrion {

    @Bean//表示加入到容器中
    public CorsWebFilter corsWebFilter(){
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();

        CorsConfiguration cn = new CorsConfiguration();
        //1.配置跨域
        /*允许那些头进行跨域       *表示所有请求头             */
        cn.addAllowedHeader("*");
        /*允许哪些请求方式进行跨域  *表示所有方式（get、post等） */
        cn.addAllowedMethod("*");
        /*允许哪些请求来源进行跨域  *表示所有来源               */
        cn.addAllowedOrigin("*");
        /*是否允许携带cookie进行跨域    true表示允许                      */
        cn.setAllowCredentials(true);
        // **的意思是匹配全路径
        source.registerCorsConfiguration("/**",cn);

        return new CorsWebFilter(source);
    }
}
